/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 邓大帅
 * Date: 2024-01-10
 * Time: 9:10
 */
class Student {
    private String name;
    private int age;
//    静态成员变量/类变量 所有对象共享的 访问静态成员变量一般用类名访问，不用通过对象的引用来访问
    private static String classRoom = "107";
//    静态成员变量初始化
//    1.直接赋值 2.默认初始化 3.get和set方法初始化 4.构造方法初始划(不建议使用) 5.通过代码块进行赋值
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

//    实例代码块/非静态代码块/构造代码块会在构造方法之前执行 与成员变量声明按顺序执行从上到下
    {
        System.out.println("实例代码块/非静态代码块/构造代码块，不在方法内，在类内部 -->用来初始化非静态的数据成员");
    }

//    只要类被加载 静态代码块就会执行 且只会在这时执行一次，之后不会再执行
    static {
        System.out.println("静态代码块-->用来初始化静态成员变量，提前准备一些数据");
    }

//    执行顺序 静态代码块 -》 非静态代码块 -》 构造方法
    public void doClass() {
        {
            System.out.println("普通代码块，在方法内部的代码块");
        }
        System.out.println("上课！");
    }

//    静态成员方法内部不能直接调用非静态成员方法，需要通过对象的引用来调用
//    静态成语方法内部不能直接使用非静态成员变量，静态方法内不能使用this
    public static void func1() {
        System.out.println("====");
    }
}
public class Test1 {
    public static void main(String[] args) {
        Student student1 = new Student("gaobo",10);
        Student student2 = new Student("gaobo",15);
        Student student3 = new Student("gaobo",20);
    }
}
